<?php

require_once("controller/Controller.class.php");
require_once("model/LoginModel.class.php");
require_once("view/LoginView.class.php");
require_once("model/UsuarioModel.class.php");
require_once("classes/Usuario.class.php");
require_once("classes/funcoes.php");
                            
class loginController extends Controller
{
    private $model;
    private $view;

    public function __construct(){
        $this->model = new loginModel();
        $this->view = new loginView();
        $this->model->setTabela("usuarios");
    }

    public function telaLogin(){
        $this->view->atribuirValor('titulo', 'Login');
        $this->view->atribuirValor('nome', 'Acesso');
        $this->view->atribuirValor('usuario', @$_COOKIE['usuario']);     
        $this->view->exibirTelaLogin();
        $this->redirect("principal.php",3);
    }

    public function fazerLogin(){
        if ($this->model->verificarSenhaUsuario($_POST['usuario'], $_POST['senha'])){
            $usuarioModel = new UsuarioModel();   
            $usuarioModel->setTabela("usuarios");
            $criteria = "usuario = '".$_POST['usuario']."' and senha = '".$this->codificaSenha($_POST['senha'],'sha1')."'";
            $result = $usuarioModel->select($criteria);
            $usuario = new Usuario();
            $usuario->setNome($result['nome']);
            $usuario->setLogin($result['usuario']);
            $usuario->setDataCadastro($result['data_cadastro']);
            $usuario->setPerfil($result['perfil']);
            $this->gravaSessao($usuario);
            $this->gravaCookie($usuario);
            $this->log('usuario entrou no sistema');
            $this->view->exibirTelaLogado();
        } 
        else{
            $this->log('usuario '.$_POST['usuario'].' tentou logar mas nao conseguiu');
            $this->view->exibirTelaErro();
        }
    }
    
    public function fazerLogof(){
        $this->log('usuario saiu do sistema');
        $this->apagaSessao();
        $this->redirect("login.php");
    }
    
    private function gravaSessao(Usuario $usuario){
        if(!$_SESSION){
            session_start();    
        }
        $_SESSION['usuario'] = $usuario->getLogin();
        $_SESSION['usuario_perfil'] = $usuario->getPerfil();
        $_SESSION['usuario_logado'] = true;
    }

    private function apagaSessao(){
        unset($_SESSION['usuario']);
        unset($_SESSION['usuario_perfil']);
        unset($_SESSION['usuario_logado']);
    }
    
    private function gravaCookie(Usuario $usuario){
        date_default_timezone_set('America/Sao_Paulo');
        setcookie('usuario',$usuario->getLogin(),(time() + (3 * 24 * 3600)));
        setcookie('ultimo_acesso',date("d/m/Y H:i:s"),(time() + (3 * 24 * 3600)));   
    }
    
    private function apagaCookie(){
        setcookie('usuario');
        setcookie('ultimo_acesso');
    }
}
?>